Repository navigation
capabilities: the broker answers a harness's initialize asking another MCP version with its own 2025-06-18, as MCP's version negotiation says (decision 0065 slice two, U9b1c) - #940
Merged
Conversation
…r MCP version with its own 2025-06-18, as MCP's version negotiation says (decision 0065 slice two, U9b1c) Claude Code opens with initialize asking 2025-11-25, and the broker refused any version but its own, so a real Claude seat dropped the server and never saw the tools it was granted (the controller's real-harness check, R1). MCP 2025-06-18's lifecycle says a server that does not support the version asked answers with one it does (https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle). The broker now greets any string version with its own 2025-06-18 result and holds the session to it: a method that version does not admit still refuses, every bound stays, and an initialize with a missing or non-string version still refuses as invalid. The harness-facing version refusal had no other consumer and goes; a child server off 2025-06-18 keeps its cause. MB3's text says so. The new enabled/negotiation.rs drives the real binary: a harness asking 2025-11-25 is answered 2025-06-18, as one asking 2025-06-18 is, lists the granted tools, is refused an unadmitted method and a non-string version exactly, and completes a call whose retained response opens through inspect. The commission's design and tasks for U9b1c ride with this commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… broker refuses at compile with the driver's own cause (decision 0065 slice two, U9b1c) A Codex seat holding a brokered grant compiled on Linux and then parked at dispatch, the driver refusing "provider 'codex' has no measured strict MCP configuration for 'brokers'" (the controller's real-harness check, R2). By U7d's design Codex's fragment and dsh's engine-only home carry no broker, so the driver always refuses such a set for them. Past the lifted fence, the compile now refuses that site in its own words with the driver's StrictCause, named by AdapterKind and matched exhaustively, before its SI2 verdict, as the driver orders them. A Claude site compiles holding the grant; a site holding no MCP is unchanged; while the fence stands, as on macOS, nothing moves. The compile's MCP tests gain one case per harness through the real pass, and the pass test's shape and resolver setup becomes shared builders. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… broker held at Handoff through real dispatch (decision 0065 slice two, U9b1c) U9b1b landed with 46.1 open: its windows ended every startup window three ways but Handoff, which only the startup deadline ended (third review, M1; operator ruling 2026-10-31, "B"). windows.rs now holds Handoff by what establishes it, not by a store read: the bootstrap stopped by the tracer inside its execve of the server, which it enters only once it has the whole binding frame and its end, holding past its standard streams exactly one descriptor, a pipe the broker holds too, its status pipe. At that window the harness's death ends the broker before its deadline, with inspect keeping the seat's result unrecorded and no call row, and the engine's timeout parks the run on its own words. Nothing below the broker remains either way. The deadline-bound check now runs for every window where the startup deadline still stands, because TEARDOWN (30 s) is the whole startup and no longer tells a cancellation from the deadline. Settlement after the harness's death allows for the tracer's delayed exec, which ends a process killed in it only when the delay ends. The module text again claims every window. 46.1 and 46.3-46.5 are ticked; evidence/U9b1c.md records each exact assertion, compiling removal and restored pass, the gates and what stays pending (exact coverage, macOS CI, the controller's real Claude seat), and evidence/U9b1b.md's Tasks paragraph says 46.1 closed here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
valentinyanakiev
enabled auto-merge
November 1, 2026 03:59
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Nov 1, 2026
This was referenced Nov 1, 2026
valentinyanakiev
added a commit
that referenced
this pull request
Nov 1, 2026
Hosted merge-queue runners vary in speed. The engine job's Linux leg ran 57 minutes on one pass of #940 and was cancelled at its 75-minute limit on the next, mid capability_broker, with every shard 15-30% slower. The coverage job runs 46-66 minutes and was cancelled at 75 on #933 and #935. A cancelled job removes the group from the queue. Both jobs now hold timeout-minutes: 90, under the queue's own check timeout, raised to 100 the same day. contributing.rs pins the two lines. Ruling: operator, 2026-11-01, "A": job limits 90, queue 100. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: Valentin Yanakiev <valentin.yanakiev@gmail.com>
valentinyanakiev
added a commit
that referenced
this pull request
Nov 1, 2026
One runner ran every shard one after another: a hosted merge-queue run took 57 minutes on Linux and 42 on macOS, and past 75 on a slow runner, which dropped #940 from the queue. scripts/test-shards.sh now names each shard's machine in each system's layout, and a run whose BROKKR_TEST_MACHINE names one (linux/<n>, macos/<n>) runs that machine's shards alone, still one after another, so a shard never shares its runner. Unset, every shard runs, as a local run does. The variable is read once and unset, so no test a shard runs inherits it. Each system's machines are numbered from 1 with none empty, and a machine named any other way is refused before anything is built. `machines test|coverage` prints the layouts. Linux: libraries | the it binaries, heaps, other own-process binaries and doctests | capability_broker alone; each about 11, 22 and 20 minutes on a hosted runner. macOS: everything but | the other own-process binaries; about 21 and 19. ci.yml's engine job becomes engine-machines, one leg per machine (45 minutes each), and `engine` is the verdict over them under the names main requires, `test (ubuntu-latest)` and `test (macos-latest)`. It runs `always()`, since a skipped job reports success to a required check: a machine that failed, was cancelled or never ran fails both verdicts. The macOS startup gate runs once, on macos/1. contributing.rs holds a required job's needed job too (JOB_LINES), reads a matrix's included systems, and gives a verdict's leg its machines' steps, so the guide's rows still write a local run of the whole suite. test_shards.rs holds the selection, the refusals and that ci.yml's matrix is the layouts. Removal controls: dropping the unset fails the machine test (a shard inherited it); dropping the empty-machine check fails the layout test. Ruling: operator, 2026-11-01, "yes, do both": the slow checks split across parallel hosted machines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: Valentin Yanakiev <valentin.yanakiev@gmail.com>
This was referenced Nov 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Slice two unit U9b1c of decision 0065 (openspec/changes/decision-0065-capabilities-slice-two/design.md, "Slice two units"; decision 0077). Delivered by the run below through the full engine council; its evidence is in the change's tasks.md and its evidence file.
The unit commit's full subject: capabilities: the broker answers a harness's initialize asking another MCP version with its own 2025-06-18, as MCP's version negotiation says (decision 0065 slice two, U9b1c)
Brokkr-Run: 0065-slice-two-unit-u9b1c-see-th-60e69132
Ruling: controller, 2026-10-31, under the operator's standing ruling of 2026-10-28 ("take the recommended option"), on the findings of the real-harness check that ruling F1 of U9b1b asked for: R1, the MCP broker answers a harness's
initializethat asks another protocol version with its own 2025-06-18 result, as MCP 2025-06-18's version negotiation says, instead of refusing it, so a real Claude seat (which asks 2025-11-25) reaches its granted tools; the session stays held to 2025-06-18 and every bound stands. R2, the compile refuses a brokered grant on a provider whose fragment carries no broker (Codex, dsh) with the driver's own cause, instead of parking at dispatch. Both are this small unit's, after U9b1b and before U9b2. The holds of 2026-10-30 stand until it lands.Ruling: operator, in chat, 2026-10-31 ("B", on U9b1b's second run, parked REVIEW-REFORGE-EXHAUSTED-MEDIUM): U9b1b landed by hand with task 46.1 open, and this unit carries its remainder as task 46.5, the harness's death and the engine's timeout through real dispatch at the Handoff window, then ticks 46.1; crates/brokkr-cli/tests/capability_broker/enabled/windows.rs joins this row.
Ruling: operator, in chat, 2026-11-01 ("A", after #933 fell out of the merge queue on hosted-runner timing): the enabled suite's teardown bounds in windows.rs become one 30 s constant, test-only, so a hosted runner's slower teardown does not fail a window's proof; no product bound changes.
🤖 Generated with Claude Code